David Leitão [2019223148]
Rodrigo Machado [2019218299]
Rui Costa [2019224237]
# Notebook setup
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
from report import *
%matplotlib inline
%config InlineBackend.figure_format = 'svg'
plt.rcParams['figure.figsize'] = [5, 5]
barn = np.array(Image.open("imagens/barn_mountains.bmp"))
peppers = np.array(Image.open("imagens/peppers.bmp"))
logo = np.array(Image.open("imagens/logo.bmp"))
path = "ex1/barn_mountains"
tmp = np.array(Image.open(f"{path}/high.jpg"))
plt.title("barn_mountains - High (qf=75)")
viewImage(tmp)
tmp = np.array(Image.open(f"{path}/medium.jpg"))
plt.title("barn_mountains - Medium (qf=50)")
viewImage(tmp)
tmp = np.array(Image.open(f"{path}/low.jpg"))
plt.title("barn_mountains - Low (qf=25)")
viewImage(tmp)
path = "ex1/peppers"
tmp = np.array(Image.open(f"{path}/high.jpg"))
plt.title("peppers - High (qf=75)")
viewImage(tmp)
tmp = np.array(Image.open(f"{path}/medium.jpg"))
plt.title("peppers - Medium (qf=50)")
viewImage(tmp)
tmp = np.array(Image.open(f"{path}/low.jpg"))
plt.title("peppers - Low (qf=25)")
viewImage(tmp)
path = "ex1/logo"
tmp = np.array(Image.open(f"{path}/high.jpg"))
plt.title("logo - High (qf=75)")
viewImage(tmp)
tmp = np.array(Image.open(f"{path}/medium.jpg"))
plt.title("logo - Medium (qf=50)")
viewImage(tmp)
tmp = np.array(Image.open(f"{path}/low.jpg"))
plt.title("logo - Low (qf=25)")
viewImage(tmp)
# Matplotlib figure sizing
plt.rcParams['figure.figsize'] = [9, 9]
Notas:
TODO Proof-read O modelo RBG é um modelo de cor que tenta simular os cones presentes no olho, criando cores com detalhes fáceis de distinguir pelo olho humano em cada canal. No entanto, esses canais apresentam uma elevada redundância ao conterem todos informação de cor e luminância. Assim, o modelo YCbCR permite uma maior eficiência na compressão ao separar o sinal num componente de lumen, $Y$, e em dois de cor, $Cb$ e $Cr$. Assim, como o sistema visual humano é mais sensível a tonalidades de verde e vermelho, é mais predominante no canal $Y$ uma presença de verde. Os canais de crominância Cb e Cr apresentam cada um a variação de azul e vermelho respetivamente relativo ao lumen.
colormodels(barn)
Notas:
DCT(barn, ratio=(4,2,0))
TODO Discuta os resultados obtidos em termos de potencial de compressão
DCT(barn, ratio=(4,2,0), block=8)
Compare os resultados obtidos com os resultados de 7.1.2 e discuta-os em termos de potencial de compressão.
DCT(barn, ratio=(4,2,0), block=64)
TODO Compare com os resultados anteriores e tire conclusões.
Fator de qualidade: 100
quantization(barn, qf=100)
Fator de qualidade: 75
quantization(barn, qf=75)
Fator de qualidade: 50
quantization(barn, qf=50)
Fator de qualidade: 25
quantization(barn, qf=25)
Fator de qualidade: 10
quantization(barn, qf=10)
TODO Comparação dos diferentes resultados e discussão da potencialidade de compressão
TODO Compare os resultados obtidos com os resultados da alínea 7 e tire conclusões.
DPCM(barn, ratio=(4,2,0), qf=75)
TODO Analise os resultados e tire conclusões.
verboseMetrics(barn, qf=100, ratio=(4,2,0))
MSE: 20.550 RMSE: 4.533 SNR: 34.058 dB PSNR: 35.003 dB
verboseMetrics(barn, qf=75, ratio=(4,2,0))
MSE: 171.586 RMSE: 13.099 SNR: 24.841 dB PSNR: 25.786 dB
verboseMetrics(barn, qf=50, ratio=(4,2,0))
MSE: 282.302 RMSE: 16.802 SNR: 22.679 dB PSNR: 23.624 dB
verboseMetrics(barn, qf=25, ratio=(4,2,0))
MSE: 422.080 RMSE: 20.545 SNR: 20.932 dB PSNR: 21.877 dB
verboseMetrics(barn, qf=10, ratio=(4,2,0))
MSE: 740.352 RMSE: 27.209 SNR: 18.492 dB PSNR: 19.436 dB
verboseMetrics(peppers, qf=100, ratio=(4,2,0))
MSE: 12.649 RMSE: 3.557 SNR: 33.905 dB PSNR: 37.110 dB
verboseMetrics(peppers, qf=75, ratio=(4,2,0))
MSE: 70.840 RMSE: 8.417 SNR: 26.423 dB PSNR: 29.628 dB
verboseMetrics(peppers, qf=50, ratio=(4,2,0))
MSE: 106.063 RMSE: 10.299 SNR: 24.670 dB PSNR: 27.875 dB
verboseMetrics(peppers, qf=25, ratio=(4,2,0))
MSE: 162.495 RMSE: 12.747 SNR: 22.818 dB PSNR: 26.022 dB
verboseMetrics(peppers, qf=10, ratio=(4,2,0))
MSE: 341.954 RMSE: 18.492 SNR: 19.586 dB PSNR: 22.791 dB
verboseMetrics(logo, qf=100, ratio=(4,2,0))
MSE: 9.283 RMSE: 3.047 SNR: 41.655 dB PSNR: 38.454 dB
verboseMetrics(logo, qf=75, ratio=(4,2,0))
MSE: 33.079 RMSE: 5.751 SNR: 36.137 dB PSNR: 32.935 dB
verboseMetrics(logo, qf=50, ratio=(4,2,0))
MSE: 55.404 RMSE: 7.443 SNR: 33.897 dB PSNR: 30.695 dB
verboseMetrics(logo, qf=25, ratio=(4,2,0))
MSE: 84.155 RMSE: 9.174 SNR: 32.081 dB PSNR: 28.880 dB
verboseMetrics(logo, qf=10, ratio=(4,2,0))
MSE: 182.662 RMSE: 13.515 SNR: 28.716 dB PSNR: 25.514 dB